package com.ruoyi.system.mapper;

import java.util.List;
import com.ruoyi.system.domain.CommunityPost;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 社区帖子Mapper接口
 * 
 * @author ruoyi
 */
@Mapper
public interface CommunityPostMapper 
{
    /**
     * 查询帖子
     * 
     * @param postId 帖子主键
     * @return 帖子
     */
    public CommunityPost selectPostById(Long postId);

    /**
     * 查询帖子列表
     * 
     * @param post 帖子
     * @return 帖子集合
     */
    public List<CommunityPost> selectPostList(CommunityPost post);

    /**
     * 新增帖子
     * 
     * @param post 帖子
     * @return 结果
     */
    public int insertPost(CommunityPost post);

    /**
     * 修改帖子
     * 
     * @param post 帖子
     * @return 结果
     */
    public int updatePost(CommunityPost post);

    /**
     * 删除帖子
     * 
     * @param postId 帖子主键
     * @return 结果
     */
    public int deletePostById(Long postId);

    /**
     * 批量删除帖子
     * 
     * @param postIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePostByIds(Long[] postIds);

    /**
     * 更新帖子点赞数
     * 
     * @param postId 帖子ID
     * @param count 点赞数变化
     * @return 结果
     */
    public int updatePostLikes(Long postId, Integer count);

    /**
     * 更新帖子评论数
     * 
     * @param postId 帖子ID
     * @param count 评论数变化
     * @return 结果
     */
    public int updatePostComments(Long postId, Integer count);

    /**
     * 查询用户点赞过的帖子列表
     * 
     * @param userId 用户ID
     * @param post 帖子信息 (用于分页或其他筛选)
     * @return 帖子集合
     */
    public List<CommunityPost> selectLikedPostListByUserId(@Param("userId") Long userId, @Param("post") CommunityPost post);

    /**
     * 查询用户评论过的帖子列表
     * 
     * @param userId 用户ID
     * @param post 帖子信息 (用于分页或其他筛选)
     * @return 帖子集合
     */
    public List<CommunityPost> selectCommentedPostListByUserId(@Param("userId") Long userId, @Param("post") CommunityPost post);
} 